using System;
using System.Collections.Generic;
using System.Text;
namespace MyDMS.BusinessLayer
{
	public class Office: BusinessObjectBase
	{

		#region InnerClass
		public enum OfficeFields
		{
			Office_Code,
			Office_Name,
			Office_Logo_Path,
			Office_Slogan,
			Street_Address,
			City,
			Country,
			ZIP_Code,
			TimeZone_Code,
			Account_Email,
			Account_Password,
			Is_Active,
			Creation_Date,
			Updation_Date
		}
		#endregion

		#region Data Members

			int _office_Code;
			string _office_Name;
			string _office_Logo_Path;
			string _office_Slogan;
			string _street_Address;
			string _city;
			string _country;
			string _zIP_Code;
			int _timeZone_Code;
			string _account_Email;
			string _account_Password;
			bool? _is_Active;
			DateTime? _creation_Date;
			DateTime? _updation_Date;

		#endregion

		#region Properties

		public int  Office_Code
		{
			 get { return _office_Code; }
			 set
			 {
				 if (_office_Code != value)
				 {
					_office_Code = value;
					 PropertyHasChanged("Office_Code");
				 }
			 }
		}

		public string  Office_Name
		{
			 get { return _office_Name; }
			 set
			 {
				 if (_office_Name != value)
				 {
					_office_Name = value;
					 PropertyHasChanged("Office_Name");
				 }
			 }
		}

		public string  Office_Logo_Path
		{
			 get { return _office_Logo_Path; }
			 set
			 {
				 if (_office_Logo_Path != value)
				 {
					_office_Logo_Path = value;
					 PropertyHasChanged("Office_Logo_Path");
				 }
			 }
		}

		public string  Office_Slogan
		{
			 get { return _office_Slogan; }
			 set
			 {
				 if (_office_Slogan != value)
				 {
					_office_Slogan = value;
					 PropertyHasChanged("Office_Slogan");
				 }
			 }
		}

		public string  Street_Address
		{
			 get { return _street_Address; }
			 set
			 {
				 if (_street_Address != value)
				 {
					_street_Address = value;
					 PropertyHasChanged("Street_Address");
				 }
			 }
		}

		public string  City
		{
			 get { return _city; }
			 set
			 {
				 if (_city != value)
				 {
					_city = value;
					 PropertyHasChanged("City");
				 }
			 }
		}

		public string  Country
		{
			 get { return _country; }
			 set
			 {
				 if (_country != value)
				 {
					_country = value;
					 PropertyHasChanged("Country");
				 }
			 }
		}

		public string  ZIP_Code
		{
			 get { return _zIP_Code; }
			 set
			 {
				 if (_zIP_Code != value)
				 {
					_zIP_Code = value;
					 PropertyHasChanged("ZIP_Code");
				 }
			 }
		}

		public int  TimeZone_Code
		{
			 get { return _timeZone_Code; }
			 set
			 {
				 if (_timeZone_Code != value)
				 {
					_timeZone_Code = value;
					 PropertyHasChanged("TimeZone_Code");
				 }
			 }
		}

		public string  Account_Email
		{
			 get { return _account_Email; }
			 set
			 {
				 if (_account_Email != value)
				 {
					_account_Email = value;
					 PropertyHasChanged("Account_Email");
				 }
			 }
		}

		public string  Account_Password
		{
			 get { return _account_Password; }
			 set
			 {
				 if (_account_Password != value)
				 {
					_account_Password = value;
					 PropertyHasChanged("Account_Password");
				 }
			 }
		}

		public bool?  Is_Active
		{
			 get { return _is_Active; }
			 set
			 {
				 if (_is_Active != value)
				 {
					_is_Active = value;
					 PropertyHasChanged("Is_Active");
				 }
			 }
		}

		public DateTime?  Creation_Date
		{
			 get { return _creation_Date; }
			 set
			 {
				 if (_creation_Date != value)
				 {
					_creation_Date = value;
					 PropertyHasChanged("Creation_Date");
				 }
			 }
		}

		public DateTime?  Updation_Date
		{
			 get { return _updation_Date; }
			 set
			 {
				 if (_updation_Date != value)
				 {
					_updation_Date = value;
					 PropertyHasChanged("Updation_Date");
				 }
			 }
		}


		#endregion

		#region Validation

		internal override void AddValidationRules()
		{
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Office_Code", "Office_Code"));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Office_Name", "Office_Name"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Office_Name", "Office_Name",100));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Office_Logo_Path", "Office_Logo_Path"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Office_Logo_Path", "Office_Logo_Path",500));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Office_Slogan", "Office_Slogan",100));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Street_Address", "Street_Address",500));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("City", "City",100));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Country", "Country"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Country", "Country",100));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("ZIP_Code", "ZIP_Code"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("ZIP_Code", "ZIP_Code",20));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("TimeZone_Code", "TimeZone_Code"));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Account_Email", "Account_Email"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Account_Email", "Account_Email",200));
			ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Account_Password", "Account_Password"));
			ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Account_Password", "Account_Password",50));
		}

		#endregion

	}
}
